>>525872224It happens in every company when you renew your workforce and let senior programmers go. The old guard programmed the bases of the tools, but from a company standpoint, tools are never seen as an investment or something that can help you earn money, so they are never revised. You use them, stitch more code on top, but no one knows how the base code works anymore, because those who programmed it are gone. There's no documentation either, because back then the teams were smaller. No one revises the doc either because you only gradually add functionalities. There's a moment when the code is so large, no one knows what it does anymore.
If anything, they should start a whole OS from scratch and develop a virtual machine on which they would install previous versions of Windows. That would be a hog to run legacy applications and programmers would maybe complain they would have to learn how to code the new way, but after joying the subtleties of the Windows API and it's legacy code, I think I'd rather see them restart from scratch. For instance, every button, panel, container, string of text etc. is created with CreateWindowEx... that function didn't exist before Windows XP and was created to accommodate custom styles. Before, you'd use CreateWindow. It does the same thing, more or less, you can use both, more or less, but it's just full of weird little quirks that sometime you'd rather use the legacy core than the new one. Nowadays, they created even more "quite not the same functions" for the same job (CreateWindowExA and CreateWindowExW) Some constant will work in certain cases, but not all. And when some options are selected, others won't work as they should. Sometime you have to enable a stupid thing like "read-only button" to enable "right-alignment for text" (it's a made up example, but the logic - or lack thereof - is the same).
Windows is a crazy beast that deserves a merciful bullet.